The present invention relates generally to computer buses for transmitting data, and more particularly to maintaining proper bus termination in data processing systems which utilize redundant bus controllers.
Today's standard computer architectures call for a number of separate components, such as a central processing unit ("CPU"), memory, ports and peripheral devices to be coupled together by electrical buses to provide a pathway for data between the various components. Electrical buses are simply groups of conductors (or lines) designed to operate as a group.
Components transmit data over buses by changing voltages on the various lines of the bus. In binary digital computers, each line in a bus is capable of assuming one of two possible states at a given moment. These states are represented by presence or absence of a voltage, or potential difference relative to ground, on each of the lines.
In the real world, buses are real electrical conductors and therefore contain impedance just as do all real conductors. This impedance traps electrical charge within the line, presenting, in a sense, a momentum against which the change must take place. When the line is directed to change from a binary one to a binary zero (meaning a grounding of the line), it resists the change, typically causing a voltage oscillation at the point of transition (termed "ringing"). This ringing may be of sufficient magnitude as to cause components reading data from the bus to misread the oscillation as the presence of a voltage (a binary one) instead of the intended binary zero, thereby corrupting the flow of data. Therefore, in such conductors, it is standard practice to provide a means by which to dissipate the electrical charge quickly and damp the ringing, so as to restore data transmission fidelity. Damping is achieved through use of a terminating circuit, which may include a plurality of resistive elements or active switches.
Some buses require terminating circuits at each end of the bus to provide effective damping. One such bus standard is the small computer systems interface ("SCSI") bus. The SCSI bus is designed to operate in conjunction with computers to provide an interface to SCSI standard peripheral devices. SCSI buses require a controller card or host card to manage communication of data between the computer and the SCSI devices and between the SCSI devices themselves. In computers, this controller card is typically placed in a backplane slot within the main chassis of the computer. The controller card contains a control circuit that manages the SCSI bus and at least one SCSI port allowing SCSI devices to couple to the card. SCSI devices are daisy chained together with a common cable. All SCSI devices operate on common signals, and both ends of the cable are terminated with hardware terminating circuits. The terminating circuits, that can be connected to either SCSI devices or to the SCSI cable itself are, as stated above, required to make data transfers on the SCSI bus reliable.
Devices connected to SCSI chains must have the correct number of terminating circuits for proper operation and to prevent damage to the SCSI controller. In systems that utilize only SCSI devices of the same bus width, there can be no more than two terminating circuits in a chain of SCSI devices, one at each end of the physical chain. This means that, if more than two SCSI devices are connected in a SCSI daisy chain, the middle device(s) in the cable must not have terminating circuits coupled to the SCSI bus. It is actually slightly more complicated than this for systems having SCSI devices of different bus widths. However, even in these systems, any one bus line of the SCSI bus is terminated only twice, once at each end of the bus line.
Some controller cards, such as the controller described in co-pending application, Auto Termination of Plural Multi-Connectors, Ser. No. 08/433,915 which is hereby incorporated by reference, provide auto-termination circuitry that determines whether the controller card is at an end of the SCSI bus and that activates terminating circuits when so determined. However, the auto-termination circuitry of these controller cards is powered by the on board power of the controller card. Therefore, if a failure occurs that effects this on board power of the controller card, then the auto-termination circuitry of the controller card may fail to properly control the terminating circuits of the controller card.
This auto-termination failure is not a major concern in systems that utilize only one controller card because if the controller card does not have power, then the SCSI bus will not properly function anyway. However, some systems utilize a feature that is known as redundancy. These systems include more than one controller card to control the SCSI bus. As a result, these system are typically more reliable because if one controller card fails, then the other controller cards of the system may still properly control the SCSI bus.
The problem that exists in these systems is that if the auto-termination circuitry on the failed controller card is no longer being powered, which is likely to be the case when the controller card fails, then the auto-termination circuitry is no longer operational and the SCSI bus may not be properly terminated. As a result, even though these systems employ redundant controller cards, a failure in a single controller card may still cause a failure on the SCSI bus due to improper bus termination.
What is needed therefore, is a method and apparatus for automatically terminating a SCSI bus and maintaining proper termination in the event of a controller card failure.